home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 31
/
Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso
/
Aminet
/
comm
/
www
/
Hunt.lha
/
Hunt.rexx
< prev
Wrap
OS/2 REXX Batch file
|
1999-02-04
|
21KB
|
710 lines
/*
$VER: Hunt.rexx 2.1 (4.2.99) Copyright (c) Nils Görs.
Funktionsbeschreibung:
Sucht mittels GREP, in einer Textdatei einen Text und gibt passende
Einträge in einem ListView-Fenster aus.
Ich verwende das Skript um vor einem Download zu überprüfen, ob ich
das Archiv vielleicht schon einmal gesaugt habe oder um in einer 4MB
Aminet-CD-Datei ein Archiv, sehr schnell, zu finden ;-)
Seit v2.0 ist es nun auch möglich, aus einer Aminet-Liste (index|recent|charts)
Archive zu bestellen.
Voraussetzung: - TCP/ICP Stack
- wget (oder ein ähnliches Programm!)
Autor dieses Skripts:
Nils Görs Tel. : +49 (0)202 78xxxx
Kaiserstr. 97a EMail: N.Goers@Art-Line.de
42329 Wuppertal oder über das ZP-Support-Brett.
Verwenden Sie bitte nach Möglichkeit elektronische Post!
Erstellen Sie bitte eine Datei (PROGDIR:Hunt.base) mit den Pfaden und
Filenamen der Listen, in denen Sie etwas suchen möchten.
*/
/* path for the savelist requester */
SaveListDir = "ram:"
Grep = "c:grep"
OutputFile = "t:GrepOut"
/* FTP download */
FTP_Get = "c:wget"
HOSTNAME= "ftp://wuarchive.wustl.edu" /* main Aminet-Server */
LOCALDIR= "/systems/amiga/aminet/"
SaveDir = "DOWNLOADS:"
/* file length limitation (in KB!) for ListView */
LenghtLimit = 30
/* Informationen über das Ausgabefenster */
LeftBorder = 10 /*Abstand linker Rand */
TopBorder = 300 /*Abstand vom oberen Rand*/
OutPutWidth = 640 /*Breite des Fensters */
OutPutHeight = 150 /*Höhe des Fensters */
OPTIONS RESULTS
PARSE ARG PubScreen SearchFor
IF PubScreen == "?" THEN DO
OPTIONS PROMPT "PUBSCREEN/K,HUNTFOR/K: "
PARSE PULL PubScreen SearchFor
END
SearchFor=DELSTR(Searchfor,1,1)
CALL _InitAll
/*
** Beschreibung der Applikation
*/
appname = 'Hunt'
applongname = 'Hunt - ©96-98 by Nils Görs'
appinfo = 'find and request interface for grep/wget'
appversion = '2.1'
apprelease = '3'
appdate = '4.2.99'
_maintags:
windowtags = WindowID(1),
PubScreenName(PubScreen),
WindowBackfillFB,
WindowTitle(appname appversion),
BeginMenu('Project'),
MenuItem('P_ChangePubScreen',10) ItemBarlabel,
MenuItem('?_About',111) ItemBarlabel,
MenuItem('Q_Quit',11),
BeginMenu('Actions'),
MenuItem('O_Open searchfile...',12),
MenuItem('C_Change seachfile...',13),
MenuItem('S_Save listview...',14),
MenuItem('F_Filter...',15),
MenuItem('V_ViewPattern...',16),
'HorizGroupA Space VertGroupA Space',
'BeginLine',
Text3('_Suchen nach:') 'TRAT_ID 2',
StringGadget(SearchFor,2) 'TRAT_Value 255',
GetEntryButton(3),
'Endline',
'SpaceS',
ListSS('Files',1,0,0),
'SpaceS',
NamedSeparatorN("FTP"),
'BeginLine',
Button('_Receive',5),
Button('R_eceive Readme',9),
Button('_Add2Batch',20),
Button('_Go2Batch',21),
'EndLine',
'BeginLine',
Button('Get Recen_t',6),
Button('Get _Charts',7),
Button('Get _Index',8),
'EndLine',
'Space',
ClippedTextBox("",3),
ClippedTextBox("Liste:" Suchliste,4),
'Space EndGroup Space EndGroup EndProject'
/*
** Unterbrechungssignale
*/
SIGNAL ON break_c
SIGNAL ON failure
SIGNAL ON halt
SIGNAL ON ioerr
SIGNAL ON syntax
app = TR_CREATEAPP('TRCA_Name' '"'appname'"',
'TRCA_LongName' '"'applongname'"',
'TRCA_Info' '"'appinfo'"',
'TRCA_Version' '"'appversion'"',
'TRCA_Release' '"'apprelease'"',
'TRCA_Date' '"'appdate'"',
'TAG_END')
IF app ~= '00000000'x THEN DO
window = TR_OPENPROJECT(app,windowtags)
WindowProject=C2D(window) /* zum Locken des Fensters bei About */
IF SearchFor == "" THEN CALL TR_SendMessage(Window,2,'TROM_ACTIVATE',0)
ELSE CALL _StartSearch
IF window ~= '00000000'x THEN DO
nummer = 0
DO WHILE nummer = 0
CALL TR_WAIT(app,'')
DO WHILE TR_HANDLEMSG(app,'event')
/******************
*** CLOSEGADGET ***
*******************/
IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN nummer = -1
/*************
*** GAGDET ***
**************/
IF event.trm_class = 'TRMS_ACTION' THEN DO
SELECT
WHEN event.trm_id = 10 THEN CALL _NewPubScreen
WHEN event.trm_id = 111 THEN CALL _About
WHEN event.trm_id = 11 THEN DO
Quit=TR_EasyRequest(app,"Really Quit?",,
"Yes|No","TREZ_Title Quit TREZ_LockProject" WindowProject)
IF Quit == 1 THEN nummer=1
END
WHEN event.trm_id == 12 THEN DO
bool = ASL_RequestFile(window,NeueListe,,
"ASLFR_PubScreenName" PubScreen,
"ASLFR_TitleText" '"Select new file to search in"')
IF bool ~= 0 THEN DO
Suchliste=neueliste.1
CALL TR_SETATTRIBUTE(window,4,'TRAT_TEXT',"Liste:" Suchliste)
END
CALL TR_SendMessage(Window,2,'TROM_ACTIVATE',0)
END
WHEN event.trm_id = 13 THEN CALL _ChangeSearchList
WHEN event.trm_id = 14 THEN CALL _SaveList
WHEN event.trm_id = 15 THEN CALL _Filter
WHEN event.trm_id = 16 THEN CALL _ViewPattern
WHEN event.trm_id = 2 THEN CALL _StartSearch
WHEN event.trm_id = 5 THEN CALL _FTPGetFile
WHEN event.trm_id = 9 THEN CALL _FTPGetReadMe
WHEN event.trm_id = 6 THEN CALL _FTPGetRecent
WHEN event.trm_id = 7 THEN CALL _FTPGetCharts
WHEN event.trm_id = 8 THEN CALL _FTPGetIndex
WHEN event.trm_id = 20 THEN CALL _Add2Batch
WHEN event.trm_id = 21 THEN CALL _Go2Batch
WHEN event.trm_id = 3 THEN DO
CALL TR_SETATTRIBUTE(window,2,'TROB_String','')
CALL TR_SendMessage(Window,2,'TROM_ACTIVATE',0)
END
OTHERWISE
NOP
END
END
/****************
*** Tastatur ***
****************/
IF event.trm_class = 'TRMS_KEYPRESSED' THEN DO
IF event.trm_code == 68 THEN DO
searchfor = TR_GETATTRIBUTE(window,2,'TROB_String')
IF searchfor = "" THEN CALL TR_SendMessage(Window,2,'TROM_ACTIVATE',0)
ELSE CALL _StartSearch
END
END
/* */
END
END
CALL TR_CLOSEPROJECT(window)
END
CALL TR_DELETEAPP(app)
END
EXIT(0)
_StartSearch:
IF Searchfor == Searchfor.bak THEN DO
IF NeueListe.0 ~= 1 THEN RETURN
ELSE NeueListe.0 = 0
END
SearchFor2.1 = TRANSLATE(SearchFor,'0a'x," ")
SearchFor2.0 = 1
CALL RXTR_WRITEFILE('t:SearchForF',Searchfor2)
CALL TR_LOCKPROJECT(window)
CALL TR_SETATTRIBUTE(window,3,'TRAT_TEXT',"Bitte haben Sie Geduld...")
current_stack = pragma('STACK',50000)
ADDRESS COMMAND Grep "-i -f t:"SearchForF Suchliste ">"OutputFile
FoundResult = (rc)
call pragma('STACK', current_stack)
CALL TR_UNLOCKPROJECT(window)
IF FoundResult == 1 THEN DO
StatusText = "Nichts gefunden!"
files.0 = 0
END
ELSE DO
CALL RXTR_READFILE(OutPutFile,Files)
IF files.0 > 1 THEN StatusText = files.0 "Einträge passen auf das Suchmuster."
ELSE StatusText = files.0 "Eintrag paßt auf das Suchmuster."
END
ADDRESS COMMAND "delete" OutputFile "QUIET"
ADDRESS COMMAND "delete t:SearchForF QUIET"
CALL TR_SETATTRIBUTE(window,1,'TROB_ListView',Files)
CALL TR_SETATTRIBUTE(window,3,'TRAT_TEXT',StatusText)
Searchfor.bak = Searchfor
RETURN
_InitAll:
NL = '0a'x
TRUE = 1
FALSE = 0
Files.0 = 0
BatchList.0 = 0
/*
** Open libs
*/
IF ~SHOW('LIBRARIES','tritonrexx.library') THEN
IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN
quit('Cannot open tritonrexx.library!',10)
IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
quit('Cannot open rexxtricks.library!',10)
IF ~SHOW('LIBRARIES','rexxsupport.library') THEN
IF ~ADDLIB('rexxsupport.library',9,-30,0) THEN
quit('Cannot open rexxsupport.library!',10)
IF ~SHOW('LIBRARIES','rexxreqtools.library') THEN
IF ~ADDLIB('rexxreqtools.library',9,-30,0) THEN
quit('Cannot open rexxreqtools.library!',10)
/*
** Set current dir
*/
PARSE SOURCE . . . script .
progdir =